{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 基于内容提出QA ###\n",
    "\n",
    "from openai import OpenAI\n",
    "\n",
    "client = OpenAI(\n",
    "    #api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n",
    "    api_key=\"sk-b571bfbe652b4ec68ac0491e33949622\", # 这种写法不好，泄露了api-key。 回头正式部署时改掉。\n",
    "    base_url=\"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n",
    ")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\n",
      "{\n",
      "    \"Type\": \"描述性问题\",\n",
      "    \"Question\": \"出差人员在报销差旅费时需要遵循哪些基本要求？\"\n",
      "},\n",
      "{\n",
      "    \"Type\": \"分析性问题\",\n",
      "    \"Question\": \"为什么出差人员需要选择符合交通费标准的交通工具出行？\"\n",
      "},\n",
      "{\n",
      "    \"Type\": \"推理性问题\",\n",
      "    \"Question\": \"如果出差人员在非出差地点停留超过一天，将面临什么后果？\"\n",
      "},\n",
      "{\n",
      "    \"Type\": \"应用性问题\",\n",
      "    \"Question\": \"出差过程中因工作原因发生的订票费、退票费及改签费等如何处理？\"\n",
      "},\n",
      "{\n",
      "    \"Type\": \"总结性问题\",\n",
      "    \"Question\": \"出差报销流程的关键步骤和注意事项有哪些？\"\n",
      "}\n",
      "]\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "\n",
    "def llm_qa_prompt(context_str):\n",
    "    query = f\"\"\"\n",
    "    ---------------------\\\n",
    "    # OBJECTIVE #\n",
    "    请根据以下Context的内容，设计一系列多角度多类型的问题，这些问题需要能够准确捕捉到文本的语义信息，并适用于RAG模型的语义索引系统。\\\n",
    "    ---------------------\\\n",
    "    {context_str}\\\n",
    "    \"\"\"\n",
    "    output_example_json =[\n",
    "        {\n",
    "            \"Type\": \"描述性问题\",\n",
    "            \"Question\": \"全球变暖的三个主要现象是什么？\"\n",
    "        },\n",
    "        {\n",
    "            \"Type\": \"分析性问题\",\n",
    "            \"Question\": \"全球变暖的主要原因有哪些？\"\n",
    "        },\n",
    "        {\n",
    "            \"Type\": \"推理性问题\",\n",
    "            \"Question\": \"如果全球变暖持续下去，可能会对生态系统造成哪些长期影响？\"\n",
    "        },\n",
    "        {\n",
    "            \"Type\": \"应用性问题\",\n",
    "            \"Question\": \"如何针对性的制定全球变暖的适应策略?\"\n",
    "        },\n",
    "        {\n",
    "            \"Type\": \"总结性问题\",\n",
    "            \"Question\": \"全球变暖的原因一共有哪些？\"\n",
    "        }\n",
    "    ]\n",
    "    output_example_str = json.dumps(output_example_json, ensure_ascii=False, indent=4)\n",
    "\n",
    "\n",
    "    prompt = f\"\"\"\\\n",
    "    \" 你的任务是根据以下示例文本内容，设计一系列问题，这些问题需要能够准确捕捉到文本的语义信息，并适用于RAG模型的语义索引系统。\\\n",
    "    示例文本是关于“气候变化”的，内容涵盖了全球变暖的现象、原因、影响以及可能的解决方案。以下是根据文本内容设计的示例问题，用以展示问题设计的具体方法：\\\n",
    "    ---------------------\\\n",
    "    # 示例问题(JSON格式) #\n",
    "    {output_example_str}\\\n",
    "    ---------------------\\\n",
    "    # 约束 #\n",
    "    Reply in Chinese. \\\n",
    "    ---------------------\\\n",
    "    \"\"\"\n",
    "\n",
    "    completion = client.chat.completions.create(\n",
    "        model=\"qwen2-7b-instruct\",\n",
    "        messages=[{'role': 'system', 'content': prompt},\n",
    "                  {'role': 'user', 'content': query}],\n",
    "        )\n",
    "    return completion.choices[0].message.content\n",
    "\n",
    "context_str = \"\"\"\n",
    "2.1 差旅管理规定\n",
    "2.1.1  出差人员应对相关费用票据来源的合法性、内容的真实性负责，严格按 规定开支差旅费。报销的各类发票，必须真实有效、合法合理，票据须 完整无损，内容填列齐全，所附原始单据要分类粘贴，分类计算报销金 额，原则上不同城市的发票分别粘贴在不同的粘贴单上，方便分类计算。\n",
    "2.1.2  出差人员应选择符合交通费标准的交通工具出行，在保障差旅效率的基 础上尽量节约成本。出差尽可能选择直线路线，如确需经非出差地点转 乘飞机、火车，应根据就近中转的原则，在中转地逗留时间不得超过一 天，否则除不予报销无故逗留期间的差旅费外，公司将依情节轻重论处。\n",
    "2.1.3  由于特殊原因，员工出差期间需中途返家探亲的，须事先征得项目群经 理批准。其差旅报销的往返路费不得超过正常出差往返实际路费总额， 路费票据应真实合理，且报销时应附全程车票。员工往返家与工作地之 间不视为出差，公司不承担该期间的任何费用。\n",
    "2.1.4  出差过程中因工作原因发生的订票费、退票费及改签费等根据实际发生 情况凭据报销。住宿费在标准限额内凭发票据实报销。城市间交通费或 住宿费超标准的，超额部分自理；如遇到春运、旅游旺季、紧急出差等 特殊原因造成费用超标的，需经项目群经理报财务总监邮件审批，审批 通过后把审批单附于纸质报销单后超出部分可予以报销.\n",
    "\"\"\"\n",
    "summary_text = llm_qa_prompt(context_str) \n",
    "#summary_dict = json.loads(summary_text)\n",
    "print(summary_text)\n",
    "#print(summary_dict)\n"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
